Hooks (Claude Code)
Claude Code作業時の特定のタイミングで、事前に指定したシェルスクリプトを実行できる
Claude Codeの/hooksから追加できる
v1.0.38で入った
Hooks - Anthropic
設定の構造
code:.claude/settings.json
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "your-command-here"
}
]
}
]
}
}
matcher
対象とするツール名のパターン
正規表現もサポート
これってもとから予約されている?mrsekut.icon
また、eventによって指定できるものがあらかじめ決まっている?mrsekut.icon
https://docs.anthropic.com/en/docs/claude-code/hooks#hook-events
e.g.
Task - Agent tasks
Bash - Shell commands
Glob - File pattern matching
Grep - Content search
Read - File reading
Edit, MultiEdit - File editing
Write - File writing
WebFetch, WebSearch - Web operations
hooks
type
現在は "command"(シェルコマンド実行)のみ
command
実行するシェルコマンド
Claude CodeのHook Events
https://docs.anthropic.com/en/docs/claude-code/hooks#hook-events
PreToolUse
Claudeがツールを呼び出す直前に実行
呼び出しをブロック可能
PostToolUse
Claudeがツール実行後に実行
Notification
Claudeが通知を出すときに実行
Stop
Claudeの動作終了時に実行
Hookの入出力
入力
Claude Codeは作業時にEventのタイミングで、JSON形式のCommandをstdin経由で投げる
hooksはそのcomandを入力として受け取ることができる
commandの形式は、Eventによって異なる
code:json
{
"tool_input": {
"file_path": "/path/to/file.ts",
"content": "file content"
}
}
だから例えば、そのcommandを解析するjqとかを書いたhooksを作れば、
「今ccが修正したファイルの拡張子がtsなら」みたいな条件分岐もできるということ
code:shell
jq -r '.tool_input.file_path | endswith(".ts")' | xargs -r npx prettier --write
このへんちょっとムズすぎるmrsekut.icon
出力
exit code 0: 成功(通常実行)
exit code 2: ブロック(PreToolUseでのみ有効)
JSON出力: より細かい制御(例:承認・ブロック・メッセージ表示)
例
フォーマット自動化
ファイル編集後に自動で整形スクリプトを実行する例
code:json
{
"matcher": "Write|Edit|MultiEdit",
"hooks": [
{
"type": "command",
"command": "/home/user/scripts/format-code.sh"
}
]
}
作業終了時にSlack通知
Claude Codeのhooks機能で、作業完了時にSlack通知を飛ばしてもらう #ClaudeCode - Qiita
Claude CodeのHooks機能を使ってTask完了時にSlack通知してみた | DevelopersIO
終了したらsayコマンドを使って教えて
https://syu-m-5151.hatenablog.com/entry/2025/07/14/105812
https://dev.classmethod.jp/articles/claude-code-hooks-basic-usage/